home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / Mark.h < prev    next >
C/C++ Source or Header  |  1990-11-28  |  2KB  |  84 lines

  1. #ifndef Marks_First
  2. #ifdef __GNUG__
  3. #pragma once
  4. #endif
  5. #define Marks_First
  6.  
  7. #include "OrdColl.h"
  8.  
  9. //---- constants passed to DoObserve to the dependents of a mark
  10.  
  11. enum eMarkChanges  {
  12.     eMarkNone = 0,
  13.     eMarkDeleted,      // mark deleted
  14.     eMarkLength,       // text in mark range changed
  15.     eMarkPos           // position of the mark changed
  16. };
  17.  
  18. //---- states of a mark
  19.  
  20. enum eMarkState { 
  21.     eStateNone = 0, 
  22.     eStateDeleted = 1,  
  23.     eStateChanged = 2,     
  24. };
  25.  
  26. enum eMarkFlags {
  27.     eMarkInclStart  =   BIT(eObjLast+1),
  28.     eMarkFixedSize  =   BIT(eObjLast+2),
  29.     eMarkLocked     =   BIT(eObjLast+3),   // mark won't move     
  30.     eMarkDefault    =   eMarkInclStart,
  31.     eMarkLast       =   eObjLast + 3
  32. };
  33.  
  34. //---- class Mark -------------------------------------------------------
  35.  
  36. class Mark: public Object {
  37. public:
  38.     int pos;
  39.     int len;
  40.     int state;
  41.  
  42. public:
  43.     MetaDef(Mark);
  44.     Mark(int p= 0, int l= 0, eMarkState s= eStateNone, eMarkFlags f= eMarkDefault);
  45.     Mark(Mark *m);
  46.     void ChangeMark (int p, int l, int s= 0)
  47.     { pos = p; len = l; state = s; }
  48.     bool HasChanged (int start,int len);
  49.     int Len()
  50.     { return len; }
  51.     int Pos()
  52.     { return pos; }
  53.     int End()
  54.     { return pos+len; }
  55.     eMarkState State()
  56.     { return (eMarkState)state; }
  57.     void Lock()
  58.     { SetFlag(eMarkLocked); }
  59.     void Unlock()
  60.     { ResetFlag(eMarkLocked); }
  61.     int Compare (Object* op);
  62.     Object *DeepClone();
  63.     ostream& PrintOn (ostream&s);
  64.     istream& ReadFrom(istream &s);
  65.     ostream& DisplayOn (ostream &s);
  66. };
  67.  
  68. //---- class MarkList -------------------------------------------------------
  69.  
  70. class MarkList: public OrdCollection {
  71.     bool doRemove;
  72. public:
  73.     MetaDef(MarkList);
  74.     MarkList(bool doRemove = FALSE);    // remove the deleted marks
  75.                     // from the marklist
  76.     void Paste(int at,int len);         // insert len characters
  77.     void Cut(int at,int len);           // delete len characters
  78.     void RangeChanged(int at, int len); // mark marks in the given range as changed
  79.     ostream& PrintOn (ostream&s);
  80.     istream& ReadFrom(istream &s);
  81. };
  82.  
  83. #endif Marks_First     
  84.